package com.own.component.common.login.parent;

import com.own.component.common.login.base.BaseAuthenticationLoginUser;
import com.own.component.common.login.user.BaseLoginUser;
import com.own.component.common.login.user.BasePermissionUser;

import java.util.List;

/**
 * LoginUser
 *
 * @author chenxueli
 * @date 2021/5/21 14:12
 */
public interface ParentAuthenticationLoginUser extends BaseAuthenticationLoginUser {

    /**
     * 基本类用户信息
     *
     * @return 基本类用户信息
     */
    @Override
    BaseLoginUser loginUser();

    /**
     * 权限类用户信息
     *
     * @return 权限类用户信息
     */
    @Override
    default BasePermissionUser permissionUser() {
        return permissionUser(loginUser());
    }

    /**
     * 权限类用户信息
     *
     * @param loginUser 登录的用户信息
     * @return 权限类用户信息
     */
    @Override
    BasePermissionUser permissionUser(BaseLoginUser loginUser);

    /**
     * 基本类用户信息
     *
     * @param userId 用户id
     * @return 基本类用户信息
     */
    @Override
    List<BaseLoginUser> loginUser(Long userId);

    /**
     * 权限类用户信息
     *
     * @param userId 用户id
     * @return 权限类用户信息
     */
    @Override
    List<BasePermissionUser> permissionUser(Long userId);

}
